네트워크분석_02_와이어샤크 패킷 분석
1. 와이어샤크란?
와이어샤크(Wireshark)는 세계에서 가장 널리 사용되는 오픈소스 네트워크 프로토콜 분석기(Network Protocol Analyzer)이다.
네트워크 인터페이스를 통해 실시간으로 오고 가는 모든 트래픽(패킷)을 캡처하고, 해당 패킷의 구조와 내용을 계층별로 상세하게 분석할 수 있게 해주는 강력한 도구이다.
- 주요 용도
- 네트워크 장애 분석 및 문제 해결(Troubleshooting)
- 보안 취약점 분석 및 해킹 시도 탐지
- 네트워크 프로토콜의 동작 원리 학습 및 교육
- 소프트웨어 및 통신 애플리케이션 개발 디버깅
2. WinPcap의 역할
WinPcap(Windows Packet Capture)은 윈도우 운영체제 환경에서 네트워크 패킷을 캡처하고 전송할 수 있도록 해주는 핵심 라이브러리(및 드라이버)이다. 실제 하드웨어인 네트워크 인터페이스 카드(NIC)에 직접 접근하여, 운영체제를 거치지 않은 Raw 패킷 데이터를 수집할 수 있도록 중간 다리 역할을 수행한다.
WinPcap은 현재 개발이 중단되었다고 함. 지금은 WinPcap을 기반으로 기능이 개선되고 호환성이 높아진 Npcap이 와이어샤크 설치 시 함께 설치되며, WinPcap과 동일한 역할을 수행한다.
3. 와이어샤크의 Status Bar
Status Bar, 상태 표시줄은 와이어샤크 창의 가장 하단에서 현재 작업 상태에 대한 핵심 요약 정보를 제공한다.
- 왼쪽(파일 정보): 현재 열려있는 캡처 파일의 이름, 파일의 총 크기, 캡처가 진행된 시간 등의 정보를 보여준다.
- 중간(패킷 수): 캡처된 패킷의 통계를 보여준다.
- Packets: 파일에 저장된 총 패킷 수
- Displayed: 현재 화면 필터에 의해 화면에 표시된 패킷 수(괄호 안은 백분율)
- Marked: 사용자가 별도로 표시(Mark)한 패킷 수
- 오른쪽(프로필/전문가 정보): 현재 사용 중인 와이어샤크 프로필(Profile) 이름과, 패킷 분석 중 발견된 오류나 경고 등 전문가 정보(Expert Information)의 요약을 표시한다.
4. pcapng 파일과 pcap 파일의 차이점
pcap은 전통적으로 사용되던 표준 패킷 캡처 형식이며, pcapng(PCAP Next Generation)는 pcap의 한계를 극복하기 위해 설계된 차세대 캡처 형식으로 현재 와이어샤크의 기본 저장 형식이다. 가장 큰 차이점은 저장할 수 있는 정보의 양과 유연성이다.
| 특징 | pcap | pcapng(Next Generation) |
|---|---|---|
| 기본 형식 | 전통적인 표준 형식 | 현재 와이어샤크 기본 형식 |
| 인터페이스 | 단일 네트워크 인터페이스의 캡처만 저장 가능 | 여러 개의 인터페이스에서 동시 캡처한 정보 저장 가능 |
| 메타데이터 | 기본적인 패킷 데이터만 저장 | 패킷 데이터 외에 다양한 부가 정보(메타데이터) 저장 가능 |
| 부가 정보 예시 | (제한적) | 인터페이스 정보(속도, 이름 등), 패킷별 주석(Comment), 이름 해석(Name Resolution) 정보 등 |
| 확장성 | 낮음 | 높음 (새로운 정보 블록을 추가하기 용이) |
5. 캡처 필터와 화면 필터의 차이점
이는 와이어샤크 사용 시 가장 중요하게 구분해야 할 개념이다.
캡처 필터(Capture Filter)
- 적용 시점: 캡처를 시작하기 전에 설정한다.
- 동작 방식: 필터 조건에 일치하는 패킷만 캡처하고, 일치하지 않는 패킷은 아예 버린다.(저장 X)
- 문법: Libpcap/Npcap 라이브러리 문법을 사용한다. (예:
host 192.168.0.1) - 목적: 불필요한 트래픽을 제외하고 필요한 데이터만 저장하여, 캡처 파일의 크기를 줄이고 시스템 부하를 낮추기 위해 사용한다. 한번 버려진 데이터는 복구할 수 없다.
화면 필터(Display Filter)
- 적용 시점: 캡처가 완료된 후 (또는 실시간 캡처 중)에 적용한다.
- 동작 방식: 일단 캡처된 모든 패킷 중에서, 필터 조건에 일치하는 패킷만 화면에 보여준다. (일치하지 않는 패킷은 숨김 처리)
- 문법: 와이어샤크 고유의 강력하고 상세한 필터 문법을 사용한다.(예:
ip.addr == 192.168.0.1) - 목적: 이미 수집된 방대한 데이터 속에서 원하는 정보만 빠르고 유연하게 골라내어 분석하기 위해 사용한다.
6. port 80 필터를 적용해서 보이는 패킷들은 어떠한 프로토콜을 가지는가?
port 80 필터(캡처 필터 기준)를 적용하면, 출발지(Source) 포트 또는 목적지(Destination) 포트가 80번인 패킷이 캡처된다.
포트 80번은 HTTP (Hypertext Transfer Protocol) 프로토콜이 사용하는 웰노운(Well-known) 포트이다. 따라서 이 필터로 보이는 패킷들은 대부분 웹 브라우저와 웹 서버 간의 통신, 즉 HTTP 프로토콜을 가지며, 전송 계층에서는 TCP 프로토콜을 사용한다.
7. 패킷 필터의 예시와 의미
host 192.168.0.1 && tcp port 80- IP 주소가 192.168.0.1 (출발지 또는 목적지) 이면서(AND), TCP 프로토콜을 사용하고 포트 번호가 80번 (출발지 또는 목적지)인 패킷.
- 192.168.0.1 호스트가 80번 포트(웹)로 통신하는 모든 TCP 패킷.
src host 192.168.0.9- 출발지(Source) IP 주소가 192.168.0.9인 모든 패킷.
dst host 192.169.0.251- 목적지(Destination) IP 주소가 192.169.0.251인 모든 패킷.
port 8080- 출발지 포트 또는 목적지 포트가 8080인 모든 패킷.
- TCP/UDP 등 프로토콜을 가리지 않는다.
!port 8080- 출발지 포트와 목적지 포트가 모두 8080이 아닌(NOT) 모든 패킷.
- 즉, 8080 포트 관련 통신을 제외한다.